Noteworthy changes to the RISC OS GCCSDK releases made.

For specific UnixLib changes, see !gcc.docs.UnixLib.Changes too.

GCCSDK GCC 3.4.6 Release 3 (released 17 July 2007)
==========================

This is only a summery of the most important changes made.

* GCC compiler fixes:

  - The dependency paths were never converted to RISC OS filepaths when
    option -mamu was specified.  Bug #151
    <URL:http://www.riscos.info/bugzilla/show_bug.cgi?id=151>.
  - Fixed incorrect stack size checking in -O3 compiled binaries. Bug #143
    <URL:http://www.riscos.info/bugzilla/show_bug.cgi?id=143> and Bug #156
    <URL:http://www.riscos.info/bugzilla/show_bug.cgi?id=156>.

* Assembler fixes:

  - Removed the built-in limit of 40 include directories.

* UnixLib fixes:

  - mktime: Fix corruption of its input structure.  Bug #152
    <URL:http://www.riscos.info/bugzilla/show_bug.cgi?id=152>.
  - regex.h: Made it usable for C++ programs.
  - Fixed incorrect program name determination for programs run as
    "*Run MyLibrary:myprog".
  - fsync: Don't error on files open with O_RDWR.
  - strnicmp: Compare lowercased versions of strings rather than uppercase.
  - Change EAGAIN value to the same as EWOULDBLOCK, to match TCPIPLibs and
    Linux. Change EDEADLK value for TCPIPLibs compatibility and add ENOTSUP.
  - uname: changed utsname.sysname from "riscos" into "RISC OS" and
    utsname.machine from "arm-acorn" into "armvxl" with 'x' the major ARM
    architecture digit.
  - Fixed memory access problem when using redirection.
  - pthreads can now be used in binaries run under TaskWindow or in Wimp
    applications with special support code needed.

* SharedCLibrary stub fixes:

  - vfscanf, vscanf and vsscanf: made it available.
  - fdopen: implemented.
  - fileno: fixed which allows C++ fstreams to work.

* Librarian fixes:

  - Fixed spurious problem when creating a new library and when run on
    RISC OS.

GCCSDK cross-compilation improvements:

* Provided -mthrowback option instructing the cross-compiler to sends its
  warnings and errors via syslog messages to a given RISC OS host.  A
  RISC OS syslogd implementation will then generated normal throwback
  messages.

GCCSDK GCC 3.4.6 Release 2 (released 17 September 2006)
==========================

This is only a summery of the most important changes made.

* GCC compilers fixes:

  - Correction of Release 1 filename handling regression with GCC.
  - Enabling of throwback for C preprocessor.
  - Pass gcc include paths through to 'as' assembler.  There are known
    limitations on the current assembler include path support concerning
    Unix and RISC OS style pathname syntax so we recommend using path
    variables when you want to specify assembler include directories.
    E.g.: gcc -IOSLib: -c source.s -o source.o

* Assembler fixes:

  - Allow suffix swapping in its include filenames and adding hdr/Hdr
    suffixes to its default suffix swap list.  This allows RISC OS and
    cross compilation of same assembler sources which include OSLib headers.
  - No longer supporting GCC @ comments.  This is no logner needed for the
    GCCSDK build procedure and allows the @ as built-in variable by default
    i.e. without having to resort to the -objasm option.
  - Assembler now supports all ARMv5E (XScale) instructions (i.e. not
    including the Thumb instructions).
  - Fixed several miss-assemblings or unsupported corner cases: LFMFD,
    LDC/STC, PLD, LDR/STR(H,SH,SB), etc.
  - Added testcases for future regression tests.

* UnixLib fixes:

  - Improvement of backtrace and error handling: showing info on all current
    threads and demangled C++ function names.
  - readdir: fix in its suffix swapping code and improved POSIX behaviour.
  - unixify: fix memory leak and return value.
  - riscosify: avoid using hard-wired "/home/riscos/env/" path.
  - Stability fix when <Alt><Break> is used.
  - Conditional support for XScale compilation.

* Librarian fixes:

  - Replacing AOF object in ALF file didn't work.
  - Several code fixes improving its stability.

* Linker fixes:

  - 'hide' edit command did not always work.

* Fix for C++ using SharedCLibrary.  Examples Makefile updated
  to build hello world examples in different ways.

* Various documentation updates.

GCCSDK cross-compilation improvements:

* Improved memory debugging support, allowing use of dmalloc instead of
  Fortify.

* Allow building of processor specific toolchains using the --with-arch,
  --with-tune and --with-float configure options.  In particular,
  allow building of GCC and UnixLib which, apart from ARMv3, also target
  ARMv3M (like ARM7), ARMv4 (like StrongARM) and ARMv5TE (like XScale)
  architectures by default.

* Improvements of the "porting scripts" used are also used by the
  GCCSDK Autobuilder:

  - Autobuilder now uses separate X libraries instead of relying
    on monolithic X tree.  Many other autobuilder packages updated.
    Non-Debian source fetcher improved.  Many dependencies added so
    that many packages can be built with just one command.
  - Faster --ro-recursive implementation.
  - Parallel build support.
  - Created pkg-config wrapper to make sure only cross-compiled pkg-config
    files are found.


GCCSDK GCC 3.4.6 Release 1 (released 12 June 2006)
==========================

* Update to full GCC 3.4.6 release.  See
  <URL:http://gcc.gnu.org/gcc-3.4/changes.html#3.4.6> for more
  information about this release.

* cmunge: Upgraded to v0.76 which has fixes for the carry-capable veneer
  return problem and a workaround for the broken handling of the system
  call in Pace SCL seen on Iyonix.  All details in !gcc.docs.CMunge.History.

* Provided two new GCC options -mlibrary-static-data-offset and
  -mclient-static-data-offset (latter being default) which when compiling
  module code to be able to use the library static data offset (at
  sl-540) instead of the client static data offset (sl-536).
  Graham Shaw <gdshaw@sagitta.demon.co.uk>

* Added resgen, a tool to create an AOF file encapsulating one or more
  files ready for (de)registering with ResourceFS.

* Several bug fixes and enhancements were done:
  - as : solved bug #149; support for offset parameter in ALIGN; support
    for ALIGN AREA attribute; alignment happens with zero bytes instead of
    random bytes; support for rotated constants.
  - decaof : made it more robust.
  - drlink : new option -strict to treat warnings as errors.  The linker
    invoked by gcc will add the option -strict when environment variable
    TLINK_STRICT has been defined (value unimportant).
  - gcc : better -mapcs-26 vs -mapcs-32 behaviour but note that -mapcs-26
    support is deprecated.
  - gcc/as/drlink : RISC OS binaries have support for reading/writing
    "program/c" RISC OS files in addition to "c.program" files (but the
    command line argument still specifies them as "program.c").
  - libfile : increased compatibility with Acorn/Castle libfile version.
  - UnixLib : bug fix details in separate !gcc.docs.UnixLib.Changes file.
  - SharedUnixLibrary (v1.10) : support for RISC OS versions where the
    module private word is in USR read-only memory.

* Various Autobuiler and porting-tool enhancements.

* GCCSDK build enhancements:
  - Move CVS to SVN changes.
  - GCC ARM backend/drlink : support for 64-bit platforms (x86_64).
  - Solaris 8 SPARC support


GCCSDK GCC 3.4.5 Release 1 (released 15 February 2006)
==========================

* Update to full GCC 3.4.5 release.  See
  <URL:http://gcc.gnu.org/gcc-3.4/changes.html#3.4.5> for more
  information about this release.

* decaof: On 14 July 2005, the original author of decaof, Andy Duplain,
  relicensed decaof under GPL.

* nm: Explictly marked as GPL.

* cmunge: Upgraded to v0.72 which now contains GCCSDK support and several
  bugs fixes and enhancements.  All details in !gcc.docs.CMunge.History.
  Many thanks to Justin Fletcher for his full support.

* as: Under some circumstances, reserved AOF symbol attributes were set
  and this could be triggered too by GCC usage of 'as'.
  drlink: A warning is given when unsupported/reserved AOF symbol
  attributes are detected.

* RISC OS modules can now be created in C++ too.

* UnixLib's regex implementation is now derived from the PostgreSQL codebase
  resulting in significantly faster timings.

* Longstanding Fortran COMMON bug is fixed.

* Calling SharedCLibrary functions (-mlibscl option) having one or more
  float arguments resulted in wrong behaviour.  This is now fixed.

* Removed the old (26 bit only) rink version.  Use the latest 26/32 bit
  neutral version at <URL:http://www.compton.nu/rink.html>.

* Porting tools are now using the environment variables GCCSDK_INSTALL_ENV
  and GCCSDK_INSTALL_CROSSBIN to locate their files.  This allows easy
  switching between multiple cross-compiler versions or installation at
  non-default directories.

* Included Andreas Dehmel's DRenderer v0.52 source & binary which recently
  became GPL licensed.  Any future development of DRenderer can happen in
  the GCCSDK project.


GCCSDK GCC 3.4.4 Release 3 (released 8 July 2005)
==========================

* Update to full GCC 3.4.4 release.  See
  <URL:http://gcc.gnu.org/gcc-3.4/changes.html#3.4.4> for more
  information about this release.

* UnixLib: Unterminated buffer fixes (__unixify and vnsprintf)

* libscl: Much improved compatibility with Castle C/C++ headers
  and TCPIPLibs.

* GCC 'gcov' profiling support is now possible.  See the GCC manual
  for more details.

* Now with full RISC OS module support.  See !gcc.docs.Intro for details.

* Included CMunge written by Justin Fletcher & Robin Watts.

* Autobuilder: Minor fixes and many improvements.  Many packages added.

* drlink: Explictly marked as GPL (permission granted for this in 2001)

* 'as', 'drlink' and 'decaof' have improved support for previously unhandled
  AOF attributes.

* Improved support for GCCSDK under Cygwin, OpenBSD and big-endian
  platforms like Mac OS X.

* Additions for soft-float support.

* argv[0] is now a Unix-format filename under UnixLib.

* !Clib is no longer distributed with GCC.  It is not used by anything,
  and the compilers which can target the SharedCLibrary using its sources
  (GCC and LCC) contain their own copies. 

* Runaway optimisation fixed (bug #131)


GCCSDK GCC 3.4.4 Release 2 (released 6 May 2005)
==========================

* drlink is much faster when handling very large numbers of symbols.

* UnixLib no longer contains any GPL code.  UnixLib in its entirety
  is govenered by the LGPL, which may make it suitable for some commercial
  projects (subject to LPGL requirements).  Specific files in UnixLib
  may be subject to different licenses.

* The SharedCLibrary compatibility headers and stubs, libscl, are
  now distributed under a BSD-style free-software license.

* The 'as' assembler is now GPL, permission thanks to Niklas R�emo.
  Also has considerable tidying and some minor bug fixes, and GCC will
  cause it to use throwback if the compiler is doing so.

* More code moved to SharedUnixLibrary (now 1.06).  This allows
  more flexible and reliable handling of some low-level operations.

* Substantial pthread improvements.

* GCCSDK now contains porting scripts and autobuilder packaging scripts
  to signficantly simplify porting and rebuilding of Unix applications
  for RISC OS.

* Linker will dynamically link to ChoX11 and DeskLib if the system
  variable TLINK_CX11 is set and -lX11 is specified on the command line.

* Better handling of fork() and related functions.

* System variables under UnixLib without a $ in them are now specific
  to the process.

* Rationalisation of escape handling in UnixLib.

* Overflows and other exceptional floating point behaviour now do
  not generate a signal, consistent with Unix behaviour.

* More safety in UnixLib signal handling; improved backtraces.

* Faster memcpy/memset/strcpy/strlen implementations from Adrian Lees.

* Addition of fake /dev/custom device in UnixLib allows overriding
  of specific file descriptor behaviour.

* Fix for needing to specify -I. sometimes with includes relative to
  a path in GCC.

* Update to latest GCC 3.4.4 snapshot.

* Rationalisation of UnixLib sources in preparation for ELF and GCC 4.

* When cross compiling, setting the system variable TLINK_MEMCHECK to
  a value will, at link time, redirect calls to malloc/calloc/realloc/free
  via the 'fortify' memory check library.  This allows checking for
  block overwrites, use of free memory and other memory indiscretions.

* UnixLib contains an amalgamation of Sun Microsystems' 'fdlibm' and
  the IBM MathLib libraries to provide precise IEEE single and double
  floating point arithmetic accurate to the last decimal place.  The
  library additionally provides all C99 math functions.

* UnixLib: incorporated David Gay's libgdtoa library to provide
  accurate representation of floating point numbers as strings.

* UnixLib: updates to 'printf' family of functions provides better
  floating-point accuracy and fixes many formatting problems.

* UnixLib: headers incorporate GCC's 'nonnull' and 'warn_unused_result'
  attributes to generate additional warnings that may aid in tracking down
  bugs at compile time.

* GCC/GCCSDK now includes the 'decaof' tool for examining AOF object
  files.


GCCSDK GCC 3.4.4 Release 1 (released 25 December 2004)
==========================

* Modernisation of assert() handling and ensure compability with StubsG.

* Improved Co-processor register support in 'as'


GCCSDK GCC 3.4.4 pre-release 4 (released 20 December 2004)
==============================

* Extensive improvement of filename handling in AOF tools and GCC.  They
  now all use UnixLib's riscosify/unixify functions and can handle
  and disambiguate a much larger range of filenames.

* drlink: Ensure that partially linked AOF files work correctly.

* drlink: Improve behaviour of GNU LINKONCE areas, which previously prevented
  some C++ programs from linking.

* libscl: Minor tidying, add stdint.h Castle C/C++ compatibility header.
  Make riscosify work properly with libscl.

* as: Now linked with SCL instead of UnixLib, so it is smaller.


GCCSDK GCC 3.4.4 pre-release 3 (released 10 December 2004)
==============================

* gcc: Updated to version 3.4.4 (prerelease of 03/Dec/2004)

* gcc: No longer prefix register names with '__' in assembler output.

* drlink: Fix reporting of size mismatches.

* ld: Use demangler API for C++ v3 symbols.

* gcc: Correct output of some floating point code that could result
  in stack mismatches.


GCCSDK GCC 3.4.4 pre-release 2 (released 29 November 2004)
==============================

* gcc: Minor bug fixes.

* zip: Be more intelligent when setting RISC OS filetype.


GCCSDK GCC 3.4.4 pre-release 1 (released 26 November 2004)
==============================

* gcc: Updated to version 3.4.4 (prerelease of 13 Nov 2004)


GCCSDK GCC 3.4.1 Release 1 (released 05 October 2004)
==========================

* gcc: Updated to version 3.4.1 to make the distribution current and
  bring in speed improvements and better optimisation.  The 3.3 release
  branch was abandoned in favour of this.

* gcc: Default is now to tune for XScale - this will improve performance
  on StrongARM and XScale processors - the most common ARM processors running
  RISC OS.

* Many substantial changes and improvements - see docs.ULChanges for the
  complete list.  Highlights include:

  - Integrated iconv support via an external module.
  - Much improved handling of child processes, avoiding previous
    potential aborts.
  - Miscellaneous pthreads improvements including addition of semaphore
    support.
  - Complete set of 64-bit maths functions.
  - Considerably improved compatibility with glibc headers, easing
    porting of many programs.
  - Improved terminal handling.
  - /dev/dsp support meaning some Unix programs using sound will work
    without modification.
  - Further improvements to filename translation.
  - General improvements to source formatting and comments.


GCCSDK GCC 3.3.3 pre-release 2 (released 18 April 2004)
==============================

* diffutils: Upgrade to version 2.8.1.  Add documentation.

* flex: Upgrade to version 2.5.31.  Add documentation.

* grep: Upgrade to version 2.5.  Add documentation.

* gperf: Add documentation.

* make: Upgrade to version 3.80.  Add documentation.

* patch: Upgrade to version 2.5.4.

* sed: Upgrade to version 4.0.9.  Add documentation.

* gcc: Fix accidental commit that prevented error messages for compiled
  files from being displayed.

* unixlib: Preserve DDEUtils Prefix upon parent process exit.  This fixes
  an interaction bug between AMU and gcc causing files to be stored in
  the wrong place.

* drlink: Fix handling of RISC OS filenames.


GCCSDK GCC 3.3.3 pre-release 1 (released 20 March 2004)
==============================

* unixlib: Path <Unix$Path> has been replaced by <UnixLib$Path>.  All
  makefiles that previously used the path Unix: will have to be updated
  to use UnixLib: instead.

* gcc: updated to release 3.3.3 20040214.  The Standard C++ Library
  has undergone a re-write, meaning any applications compiled with this
  C++ compiler are not compatible with previous GCC releases.

* unixlib: POSIX thread (pthread) support

* gcc, unixlib, libscl: Default build is now APCS-32.  APCS-26 builds are
  deprecated and will be removed from a future version.

* gcc: C++ and Fortran applications can now be compiled to use the
  SharedCLibrary (libscl) as an alternative to UnixLib.  UnixLib
  remains the default target C run-time library.

* unixlib: Stack model changed from UNIX-style linear stacks
  to RISC OS SharedCLibrary style chunked stacks.  This allows
  for automatic WimpSlot extension.

* unixlib: Emulation of /dev/random and /dev/zero.

* unixlib: New resolver libraries, taken from glibc 2.2.5.

* unixlib: Improve compatibility with the C99 standard.

* unixlib: New crypt implementation, taken from glibc 2.2.5.

* as: Big-endian processor support.  Required for cross-compiling on
* processors such as the MIPS.

* as: Fixes for common area symbol handling

* as: Support for ELF object format.

* as: Improve filename handling and search paths for GET.

* ar: Closer emulate UNIX's 'ar' implementation.

* sed: Upgrade to version 4.0.7.


GCCSDK GCC 2.95.4 Release 3 (released 05 January 2003)
===========================

* as: Fix pre/post indexed addressing assembler error.

* gccsdk: Support NetBSD.

* unixlib: Fix #include typo in inttypes.h.

* libscl: Preserve flags on 26-bit systems.


GCCSDK GCC 2.95.4 Release 2 (released 13 November 2002)
===========================

* ar: This is an ALF implementation of the Unix archiver.  This is
  simply a front end onto libfile but takes compatible arguments.

* nm: Based on decaof, this program is an AOF version of the Unix
  program to list symbols in object files.

* as: Fix broken co-processor mnemonic support.

* drlink: Upgrade from 0.3.4 to 0.3.9.

* unixlib: Fix a command line argument bug when using file-descriptor
  based re-direction.

* unixlib: Logic for isprint was wrong.

* unixlib: usleep gets 1/100th sec resolution.

* gcc: Support hh and icc filename extensions.

* gcc: [BUG48] Tail call optimisation and chunked stacks.

* gcc: [BUG88] Prevent STR code generation where the source and base
  register are the same.

* bison: [BUG26] Pack bison files in the distribution.

* libscl: Support APCS-32.


GCCSDK GCC 2.95.4 Release 1 (released 20 December 2001)
===========================

* unixlib: Allow for program independent sfix settings.

* unixlib: Remove restriction on the maximum length of a command line.

* unixlib: Add wchar.h, inttypes.h, stdint.h and supporting functions.

* unixlib: Support `,xyz' RISC OS file type extensions.

* unixlib: Fix longstanding bug that causes programs to hard-lock a
  computer whilst using the network stack.

* unixlib: Support for DoggySoft's Syslog module.

* unixlib: Header file re-arrangements so that UnixLib can be used
  as a drop-in compile time replacement for the SharedCLibrary.

* gcc: Remove weak symbol use that was enabled in pre-release 3.

* gcc: Changed compiler executable directory from arm-riscos to
  arm-acorn-riscos.

* gcc: Minor code generation optimisation for small C++ functions.

* gcc: Bug fix in Unix filename translation.  Pathnames starting with
  `../../something' would be translated to '../../'.

* gcc: By default the libraries and headers for UnixLib and SharedCLib
  are integrated into the distribution.  GCC therefore no longer relies
  on the Unix$Path and C$Path variables.  During the link stage, it is
  recommended that the GCC command is used, rather than calling drlink
  directly.

* gcc: The option specifying that source code should be built and linked
  against the SharedCLibrary rather than UnixLib has changed from the
  rather uninformative -mstubs to -mlibscl.

* as: Better support for local labels.

* gcc: Upgraded to version 2.95.4.


GCCSDK GCC pre-release 3a  (released 23 November 1999)
=========================

* Integer division will now raise a SIGFPE upon division
  by zero

* Front-end programs g77 and g++ had not been built since the
  upgrade to 2.95.2 and were looking for the compilers in
  directory 2_95_1.
  
* The !run file incorrectly set the pathname for the /tmp
  directory.


GCCSDK GCC pre-release 3  (released 19 November 1999)
========================

These are the user visible changes since pre-release 2.

* Updated to GCC 2.95.2

* C++: The Standard Template Library headers have been moved from
  their own sub-directory (stl) to their parent directory.

* Fix errors in the conversion of float/double and long doubles
  to 64-bit integers. These functions have been re-coded to not
  use floating-point instructions.

* as: The assembler incorrectly compiled a post-indexed LDR/STR
  as a pre-indexed LDR/STR.

* as: Incorrect filename translation was causing AOF files
  named o.s_temp to be written out as o.o_temp

* unixlib: Bug fixes in UnixLib's strsep and strtoul functions.
  Implemented C9X headers, fenv.h and complex.h. Added many new
  math functions.


GCCSDK GCC pre-release 2  (released 23 September 1999)
========================

This file details the user visible changes since pre-release 1.

* Separate libgcc runtime library for targetting the SharedCLibrary
called libgcc_sh.

* Exception handling bug fix.

* Transparent suffix swapping performed by UnixLib is now private
to the GCC compilers and utilities (set by UnixFS$<progname>$sfix)

* Directory structure has been reorganised. Binaries and
supporting libraries are now in version specific directories so
it will be possible to have multiple gcc installations and select
an appropriate compiler by its version number (see `gcc -V').

* C++ support libraries libio and libstdc++ are now integrated
into the main !gcc tree, rather than being separate directories.
Hence it is no longer a requirement to add -Ilibio: and -Ilibstdc:
to the gcc command line, likewise with -Llibio: and -Llibstdc:
on the linker command line, however you still will need to add
-lstdc++ and -liostream.

* The C++ libraries should now be compatible with the long
file name feature of RISC OS 4. This shouldn't affect users of
filing systems that support only 10 characters i.e. ADFS, IDEFS
and SCSIFS on RISC OS 3.

* The example programs originally located in !gcc.files have been
moved out of the !gcc directory. Running !gcc will no longer
change the currently selected directory.

* Documentation update to reflect directory structure changes.
Added a clear note regarding the memory usage of gcc.
